const db = require('../db/index')

const bcrypt = require('bcryptjs')



// 获取用户基本信息的处理函数
exports.getUserIfo = (req, res) => {

    //    定义查询用户信息的sql语句
    console.log(req.user)
    const sql = `SELECT id,username,nickname,email,user_pic FROM ev_users WHERE id=?`

    // 执行sql
    db.query(sql, req.user.id, (err, results) => {

        // 执行sql语句失败
        if (err) return res.cc(err)

        // 执行sql语句成功，但查询结果为空
        if (results.length !== 1) return res.cc('获取用户信息失败')

        // 获取用户信息成功
        res.send({
            status: 0,
            message: "获取用户信息成功",
            data: results
        })

    })

}

// 更新用户信息
exports.updateUserInfo = (req, res) => {

    //  定义更新用户信息的sql语句
    const sql = `UPDATE ev_users SET ? WHERE id=?`
    console.log(req.body)
    db.query(sql, [req.body, req.body.id], (err, results) => {

        // 执行sql语句失败
        if (err) return res.cc(err)

        // 执行sql成功，但影响行数不1
        if (results.affectedRows !== 1) return res.cc('修改用户信息失败')

        // 修改用户信息成功
        return res.cc('修改用户信息成功', 0)
    })
}


// 删除用户

exports.deleteUserInfo = (req, res) => {

    //  定义更新用户信息的sql语句
    const sql = `UPDATE ev_users SET is_delete = 1 WHERE id =?`
    console.log(req.body)
    db.query(sql, req.body.id, (err, results) => {

        // 执行sql语句失败
        if (err) return res.cc(err)

        // 执行sql成功，但影响行数不1
        if (results.affectedRows !== 1) return res.cc('删除用户信息失败')

        // 修改用户信息成功
        return res.cc('删除用户信息成功', 0)
    })
}





// 修改密码

exports.updatepwd = (req, res) => {

    const sql = `SELECT * FROM ev_users WHERE id=?`

    db.query(sql, req.user.id, (err, results) => {

        if (err) return res.cc(err)

        if (results.length !== 1) return res.cc('用户不存在！')

        const compareResult = bcrypt.compareSync(req.body.oldPwd, results[0].password)

        console.log(compareResult)

        if (!compareResult) return res.cc("旧密码错误")

        const sql = `UPDATE ev_users SET password=? WHERE id=?`

        const newPwd = bcrypt.hashSync(req.body.newPwd, 10)

        db.query(sql, [newPwd, req.user.id], (err, results) => {

            // 执行sql语句失败
            if (err) return res.cc(err)

            // 执行sql成功，但影响行数不1
            if (results.affectedRows !== 1) return res.cc('更新密码失败')

            // 修改用户信息成功
            return res.cc('更新密码成功', 0)
        })

    })

}

// 更新头像

exports.updateAvatar = (req, res) => {
    const sql = `UPDATE ev_users SET user_pic=? WHERE id=?`
    console.log(req)

    db.query(sql, [req.body.avatar, req.user.id], (err, results) => {

        // 执行sql语句失败
        if (err) return res.cc(err)

        // 执行sql成功，但影响行数不1
        if (results.affectedRows !== 1) return res.cc('更新头像失败')

        // 修改用户信息成功
        return res.cc('更新头像成功', 0)
    })

}


exports.getAllUserIfo = (req, res) => {

    let params = req.query || req.params


    console.log(params)
    //    定义查询用户信息的sql语句
    let sql = `SELECT id,username,nickname,email,user_pic,status,update_date FROM ev_users WHERE is_delete =0 `

    let content = []
    let isMore = false //是否有多个查询参数

    if (params.username) {
        sql += ` AND username LIKE ? `
        content.push(params.username)
        isMore = true;
    }
    if (params.email) {
        sql += " AND email LIKE ? "; //and是两个条件都必须满足，or是或的关系
        content.push(params.email);
    }
    if (params.status) {
        sql += " AND status LIKE ? "; //and是两个条件都必须满足，or是或的关系
        content.push(params.status);
    }
    console.log(sql)
    if (params.pageNun || params.pageSize) { //开启分页
        let current = params.pageNun; //当前页码
        let pageSize = params.pageSize; //一页展示多少条数据
        sql += " limit ?,?";
        content.push((current - 1) * pageSize, parseInt(pageSize));
    }
    // 执行sql
    db.query(sql, content, (err, results) => {

        // 执行sql语句失败
        if (err) return res.cc(err)
        // 执行sql语句成功，但查询结果为空
        // if (results.length !== 1) return res.cc('获取用户信息失败')
        results = results.map(d => {
            d.update_date = new Date(d.update_date).getFullYear() + "-" + (new Date(d.update_date).getMonth() + 1 < 10 ? '0' + (new Date(d.update_date).getMonth() + 1) : (new Date(d.update_date).getMonth() + 1)) + "-" + new Date(d.update_date).getDate() + " " + new Date(d.update_date).getHours() + ":" + (new Date(d.update_date).getMinutes() < 10 ? '0' + new Date(d.update_date).getMinutes() : new Date(d.update_date).getMinutes());
            return d
        })
        // 获取用户信息成功
        res.send({
            status: 0,
            message: "获取用户信息成功",
            data: results,
            total: results.length
        })

    })

}